package com.luzhikun.java;

import org.junit.Test;

/**
 * 通过反射创建对应的运行时类的对象
 *
 * @author shkstart
 * @create 2021-03-03 9:42
 */
public class NewIntemceTest {
    @Test
    public void test1() throws IllegalAccessException, InstantiationException {
        Class<Person> personClass = Person.class;
        /*
         * newInstance:调用此方法，创建对应运行时类的对象，内部调用的是运行时类的空参构造器
         *
         * 要想此方法正常创建运行时类的对象，要求：
         * 1.运行时类必须要有空参构造器
         * 2.空参构造器的访问权限得够，通常设置为 public的
         *
         * 在javabean中要求提供一个public空参构造器
         * 原因：① 便以我们通过反射，创建运行时类的对象
         *       ②：便于子类继承此运行时类时，默认调用super空时，有此构造器
         *
         * */
        Person person = personClass.newInstance();
        System.out.println(person);
    }
}
